package com.auto.autoapp.util

import android.graphics.Rect

object SizeUtil {
    /**
     * 计算将 `inner` 完全限制在 `outer` 水平范围内所需的水平偏移量。
     *
     * 返回：
     * - fullyContained：当前是否已完全位于 `outer`（同时满足水平和垂直）。
     * - offsetX：沿 X 轴需要偏移的量。正值向右，负值向左；0 表示无需水平偏移。
     *
     * 注意：
     * - 如果是垂直方向越界导致未完全包含，offsetX 可能为 0。
     * - 若 `inner` 比 `outer` 更宽，任何水平偏移都无法完全包含，
     *   此时返回的 offsetX 仅用于将其贴齐到最近的边界。
     */
    fun horizontalOffsetToContain(inner: Rect, outer: Rect): Pair<Boolean, Int> {
        val fullyContained = inner.left >= outer.left &&
                inner.top >= outer.top &&
                inner.right <= outer.right &&
                inner.bottom <= outer.bottom

        if (fullyContained) return true to 0

        // 计算水平偏移量：正值向右，负值向左
        val offsetX = when {
            inner.left < outer.left -> outer.left - inner.left
            inner.right > outer.right -> outer.right - inner.right
            else -> 0
        }

        return false to offsetX
    }
}